home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / util / primitives / bits.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  74 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from mapping import Storage
  5. from itertools import izip
  6. from random import getrandbits
  7.  
  8. def hex2bin(s):
  9.     return ''.join((lambda .0: for x in .0:
  10. chr(int(x, 16)))(s.split()))
  11.  
  12.  
  13. def rand32():
  14.     import random as random
  15.     return random.randint(1, 0xFFFFFFFFL)
  16.  
  17.  
  18. def getrandbytes(n):
  19.     return ''.join((lambda .0: for _i in .0:
  20. chr(getrandbits(8)))(range(n)))
  21.  
  22.  
  23. def rol(i, n, bits = 32):
  24.     (div, mod) = divmod(i << n, 2 ** bits - 1)
  25.     return mod | div >> bits
  26.  
  27.  
  28. def ror(i, n, bits = 32):
  29.     return (i % 2 ** n << bits - n) + (i >> n)
  30.  
  31.  
  32. def bitfields(*names):
  33.     bits = [ 2 ** i for i in xrange(len(names)) ]
  34.     return Storage(izip(names, bits))
  35.  
  36.  
  37. class BitFlags(object):
  38.     
  39.     def __init__(self, names):
  40.         self._field = bitfields(*names)
  41.         self.__dict__.update(dict.fromkeys(names, False))
  42.  
  43.     
  44.     def Pack(self):
  45.         return reduce((lambda a, b: a | b), (map,)((lambda x: getattr(self._field, x) * getattr(self, x)), self._field))
  46.  
  47.     
  48.     def Unpack(self, val):
  49.         _[1]
  50.  
  51.  
  52.  
  53. def leftrotate(s, shift, size = 32):
  54.     max = pow(2, size)
  55.     s = s % max << shift
  56.     (wrap, s) = divmod(s, max)
  57.     return s | wrap
  58.  
  59.  
  60. def utf7_to_int(databuf):
  61.     total = i = 0
  62.     more_bytes = True
  63.     while more_bytes:
  64.         byte = ord(databuf[i])
  65.         more_bytes = bool(byte & 128)
  66.         total |= (byte & 127) * (1 << 7 * i)
  67.         i += 1
  68.     return (total, i)
  69.  
  70. if __name__ == '__main__':
  71.     import doctest
  72.     doctest.testmod(verbose = True)
  73.  
  74.